package com.cn.wx.servlet;

import com.cn.wx.model.UserModel;
import com.cn.wx.util.JDBC;

import javax.jws.soap.SOAPBinding;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        UserModel userModel=new UserModel();

//        userModel.setId(6);
        userModel.setUsername("aaa");
        userModel.setPassword("aaa");
        add(userModel);
//        update(userModel);
//        getUser(6);
//        delete(3);
//        getAll();


//        1.JDBC的简单封装，面试的时候会问JDBC的连接，四个常量，DRIVER，URL，ROOT,PASSWORD
//        三个类：Connection, 连接数据库 PreparedStatement 编译sql语句 ,ResultSet 返回结果集
//        面试会问：PreparedStatement和Statement有什么区别
//        2.得到连接：可以用单例模式，恶汉模式，饱汉模式，双重锁，面试的时候会让你们直接写
//        3.封装新增，修改删除的方法，封装查询的方法。
//        4.JDBC的关闭：关闭三个连接一定记得分开写。
//        5.登陆页面逻辑问题
//        6.dao里面写接口，数据库实现层的接口
//        7.impl，数据实现层，主要封装sql语句，和执行sql代码
//        8.service业务逻辑层，实现所有逻辑方法，只返回给控制层需要数据
//        9.servlet控制层
//              接收页面数据，
//              封装页面数据（实体类），
//              调用业务逻辑层，
//              返回页面
//        10.页面样式简单方法，这里以表格为例
//        任务：
//        1.自己编写JDBC
//        2.将后台页面 新闻内容展示出来，产品内容展示出来
    }

    /**
     * 查询所有
     */
    private static void getAll() {
        String sql = "select * from user";
        List<UserModel> list = new ArrayList<>();
        ResultSet resultSet = JDBC.getResultSet(sql);

        try {
            while (resultSet.next()) {
                UserModel userModel = new UserModel();
                userModel.setId(resultSet.getInt("id"));
                userModel.setUsername(resultSet.getString("username"));
                userModel.setPassword(resultSet.getString("password"));
                list.add(userModel);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        JDBC.close();
    }


    /**
     * 通过ID得到一条数据
     */
    private static void getUser(Integer id) {

        String sql = "select * from user where id=" + id;
        ResultSet resultSet = JDBC.getResultSet(sql);
        UserModel userModel = new UserModel();
        try {
            while (resultSet.next()) {
                userModel.setId(resultSet.getInt("id"));
                userModel.setUsername(resultSet.getString("username"));
                userModel.setPassword(resultSet.getString("password"));
            }
            System.out.println(userModel);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 新增一条数据
     */
    private static void add(UserModel userModel) {
        String sql = "insert into user(username,password)values('" + userModel.getUsername() + "','" + userModel.getPassword() + "')";
        int count = JDBC.excuteUpdate(sql);
        System.out.println(count);
    }

    /**
     * 修改数据
     */
    private static void update(UserModel userModel) {
        String sql = "update user set username='" + userModel.getUsername() + "', password='" + userModel.getPassword() + "' where id=" + userModel.getId();
        int count = JDBC.excuteUpdate(sql);
        System.out.println(count);
    }

    /**
     * 根据id删除数据
     */
    private static void delete(int id) {
        String sql = "delete from user where id=" + id;
        int count = JDBC.excuteUpdate(sql);
        System.out.println(count);
    }
}
